package com.ruoyi.message.service.impl;

import com.ruoyi.message.domain.SysMessage;
import com.ruoyi.message.mapper.SysMessageMapper;
import com.ruoyi.message.service.ISysMessageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;

import com.ruoyi.common.utils.SecurityUtils;

@Service
public class SysMessageServiceImpl implements ISysMessageService {

    @Autowired
    private SysMessageMapper sysMessageMapper;

    @Override
    public List<SysMessage> selectSysMessageList(SysMessage sysMessage) {
        return sysMessageMapper.selectSysMessageList(sysMessage);
    }

    @Override
    public SysMessage selectSysMessageById(Long messageId) {
        return sysMessageMapper.selectSysMessageById(messageId);
    }

    @Override
    public int insertSysMessage(SysMessage sysMessage) {
        // 设置默认值
        if (sysMessage.getStatus() == null) {
            sysMessage.setStatus(0); // 默认未读
        }
        
        // 设置创建时间
        if (sysMessage.getCreateTime() == null) {
            sysMessage.setCreateTime(new Date());
        }
        
        // 设置创建者
        if (sysMessage.getCreateBy() == null || sysMessage.getCreateBy().isEmpty()) {
            sysMessage.setCreateBy(SecurityUtils.getUsername());
        }
        
        return sysMessageMapper.insertSysMessage(sysMessage);
    }

    @Override
    public int updateSysMessage(SysMessage sysMessage) {
        // 如果没有设置更新时间，则设置当前时间
        if (sysMessage.getUpdateTime() == null) {
            sysMessage.setUpdateTime(new Date());
        }
        
        // 如果没有设置更新者，则设置当前用户
        if (sysMessage.getUpdateBy() == null || sysMessage.getUpdateBy().isEmpty()) {
            sysMessage.setUpdateBy(SecurityUtils.getUsername());
        }
        
        return sysMessageMapper.updateSysMessage(sysMessage);
    }

    @Override
    public int deleteSysMessageByIds(Long[] ids) {
        return sysMessageMapper.deleteSysMessageByIds(ids);
    }

    @Override
    public void readSysMessage(Long messageId) {
        SysMessage sysMessage = new SysMessage();
        sysMessage.setMessageId(messageId);
        sysMessage.setStatus(1); // 已读状态
        sysMessageMapper.updateSysMessage(sysMessage);
    }
}
